﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Drawing;
using System.Data;
using System.Linq;
using System.Text;
using System.Windows.Forms;

namespace Systemet.SideViews
{
    public partial class SideBudgeteratResultat : UserControl
    {
        private Views.BudgeteratResultat mainAktivitet;
        private Domain.Budgetcontroller prdControll;
        private Domain.ProdukController prodCont;
        private AutoCompleteStringCollection filterWords;
        private List<string> inlagda;

        public SideBudgeteratResultat()
        {
            InitializeComponent();
            AccessController.Instance.SidMeny = this;
            prdControll = new Domain.Budgetcontroller();
            prodCont = new Domain.ProdukController();
            filterWords = new AutoCompleteStringCollection();
            inlagda = new List<string>();
            prdControll.getPålägg();
        }

        private void SideBudgeteratResultat_Load(object sender, EventArgs e)
        {
            FlowController.Instance.ShowSpecifikMenu(FlowController.Instance.MainTabView[0]);
            mainAktivitet = (Views.BudgeteratResultat)AccessController.Instance.ReturnMainView();
        }

        private void radiobtnProdukt_CheckedChanged(object sender, EventArgs e)
        {
            if (radiobtnProdukt.Focused)
            {
                groupBoxFiltreringskriterier.Visible = true;
                mainAktivitet = (Views.BudgeteratResultat)AccessController.Instance.MainView;
                mainAktivitet.UpdateDgv("produkt",textBoxFiltreringsKriterier.Text);
                //prdControll.updateBudResDGV(textBoxFiltreringsKriterier.Text);

                Filtrera(sender, null);
            }
        }

        private void radioBtnProdGrupp_CheckedChanged(object sender, EventArgs e)
        {
            if (radioBtnProdGrupp.Focused)
            {
                groupBoxFiltreringskriterier.Visible = true;
                mainAktivitet = (Views.BudgeteratResultat)AccessController.Instance.MainView;
                mainAktivitet.UpdateDgv("produktgrupp", textBoxFiltreringsKriterier.Text);

           //     prdControll.updateBudResDGVGrupp(textBoxFiltreringsKriterier.Text);
                Filtrera(sender, null);
            }
        }

        private void radioBtnAvdelning_CheckedChanged(object sender, EventArgs e)
        {
            if (radioBtnAvdelning.Focused)
            {
                groupBoxFiltreringskriterier.Visible = false;
                prdControll.setRadioButton(radioBtnAvdelning.Text);

                mainAktivitet = (Views.BudgeteratResultat)AccessController.Instance.MainView;
                mainAktivitet.UpdateDgv("avdelning", textBoxFiltreringsKriterier.Text);
            //    prdControll.updateBudResDGVAvdelning();
            }
        }

        private void radioBtnFöretag_CheckedChanged(object sender, EventArgs e)
        {
            if (radioBtnFöretag.Focused)
            {
                groupBoxFiltreringskriterier.Visible = false;
                prdControll.setRadioButton(radioBtnFöretag.Text);
                mainAktivitet = (Views.BudgeteratResultat)AccessController.Instance.MainView;
                mainAktivitet.UpdateDgv("foretag", textBoxFiltreringsKriterier.Text);
               // prdControll.updateFöretagBudgetInformation();
            }
        }

        private void Filtrera(Object sender, EventArgs e)
        {
            inlagda.Clear();
            filterWords.Clear();

            //PRODUKTFILTRERING
            if (sender == radiobtnProdukt)
            {
                prdControll.setRadioButton(radiobtnProdukt.Text);

                foreach (Produktregister p in prodCont.Produktlista)
                {
                    if (!inlagda.Contains(p.produkt))
                    {
                        if (!filterWords.Contains(p.produkt))
                        {
                            filterWords.Add(p.produkt);
                        }
                    }
                }
            }

            //PRODUKTGRUPPSFILTRERING
            else if (sender == radioBtnProdGrupp)
            {
                prdControll.setRadioButton(radioBtnProdGrupp.Text);

                foreach (Produktregister p in prodCont.Produktlista)
                {
                    if (!inlagda.Contains(p.Produktgrupp.produktGruppNamn))
                    {
                        if (!filterWords.Contains(p.Produktgrupp.produktGruppNamn))
                        {
                            filterWords.Add(p.Produktgrupp.produktGruppNamn);
                        }
                    }
                }
            }

            textBoxFiltreringsKriterier.AutoCompleteCustomSource = filterWords;
            textBoxFiltreringsKriterier.AutoCompleteMode = AutoCompleteMode.Suggest;
            textBoxFiltreringsKriterier.AutoCompleteSource = AutoCompleteSource.CustomSource;
        }

        //Used to filter products/productgroups
        private void OnTextSearchChange(object sender, EventArgs e)
        {
            //prdControll.filterSideBudgResult
            //prodCont;
            //pC = new Domain.PersonalController();
            //pC.updateMainDgv(avdelning, Pnamn, persNr);
            if (radiobtnProdukt.Checked)
                prdControll.updateBudResDGV(textBoxFiltreringsKriterier.Text);

            else if (radioBtnProdGrupp.Checked)
                prdControll.updateBudResDGVGrupp(textBoxFiltreringsKriterier.Text);
        }
    }
}
